package com.bbs.service.impl;

import com.bbs.dao.PostDao;
import com.bbs.entity.Page;
import com.bbs.entity.Post;
import com.bbs.service.PostService;
import com.bbs.utils.MyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service("postService")
public class PostServiceImpl implements PostService {
    @Autowired
    private PostDao postDao;
    /**
     * 查询发帖列表
     * @param curPage 当前页
     * @return
     */
    public Page<Post> findByPage(int curPage,String order) {
        //每页记录数
        int limit = 8;
        //从哪开始.假设curPage=2,即从第二页开始查，那么offset=(2-1)*5=5,即从第五条记录开始查
        int offset = (curPage-1) * limit;
        //获得总记录数，总页数
        int allCount = postDao.selectPostCount();
        int allPage = 0;
        if (allCount <= limit) {
            allPage = 1;
        } else if (allCount % limit == 0) {
            allPage = allCount / limit;
        } else {
            allPage = allCount / limit + 1;
        }
        //分页得到数据列表
        List<Post> postList = postDao.findByPage(offset,limit,order);

        // 封装分页对象信息并返回给控制器
        Page<Post> pageInfo = new Page<>(allPage,curPage);
        pageInfo.setList(postList);
        return pageInfo;
    }

    @Override
    public Post getPostByPid(int pid) {
        // 更新浏览数
        postDao.updateScanCount(pid);
        return postDao.getPostByPid(pid);
    }

    @Override
    public boolean getLikeStatus(int pid, Integer sessionUid) {
        return postDao.getLikeStatus(pid,sessionUid);
    }


    @Override
    public int publishPost(Post post) {
        // 构造发帖信息post
        post.setPublishTime(MyUtil.formatDate(new Date()));// 发布日期
        post.setReplyTime(MyUtil.formatDate(new Date())); // 回帖日期
        // todo 更新用户发帖次数
        int flag = postDao.savePost(post);
        // TODO 清掉redis 缓存

        return flag;
    }

    @Override
    public List<Post> getPostList(int uid) {
        return postDao.getPostList(uid);
    }
}
